Fix longtask layout tests This CL fixes the 3 remaining tests in longtask-timing that Timeout. The iframes are added from script instead of html because this seems to make frame attribution easier. The cross-origin tests are changed to use the sandbox property of iframes instead of changing the src. Bug: 754819 Change-Id: I1dfd0e3d7c1d2f29feb0eba5e98b683faa5ab44c Reviewed-on: https://chromium-review.googlesource.com/798155 Reviewed-by: Timothy Dresser <tdresser@chromium.org> Reviewed-by: Shubhie Panicker <panicker@chromium.org> Commit-Queue: Nicolás Peña Moreno <npm@chromium.org> Cr-Commit-Position: refs/heads/master@{#521388} 
diff --git a/longtask-timing/longtask-in-childiframe-crossorigin.html b/longtask-timing/longtask-in-childiframe-crossorigin.html index 4ad9a74..2fa0f78 100644 --- a/longtask-timing/longtask-in-childiframe-crossorigin.html +++ b/longtask-timing/longtask-in-childiframe-crossorigin.html 
@@ -35,7 +35,7 @@  assert_equals(attribution.containerId, 'child-iframe-id');  assert_equals(attribution.containerName, 'child-iframe-name');  assert_equals(attribution.containerSrc, - 'http://www1.web-platform.test:8000/longtask-timing/resources/subframe-with-longtask.html'); + 'resources/subframe-with-longtask.html');  observer.disconnect();  t.done();  }) @@ -44,10 +44,11 @@  const iframe = document.createElement('iframe');  iframe.id = 'child-iframe-id';  iframe.name = 'child-iframe-name'; + // Simulate cross-origin by using sandbox. + iframe.sandbox = "allow-scripts";  document.body.appendChild(iframe); - // TODO(panicker): simulate cross-origin instead - iframe.src = 'http://www1.web-platform.test:8000/longtask-timing/resources/subframe-with-longtask.html'; -}, 'Performance longtask entries in child iframe are observable in parent.'); + iframe.src = 'resources/subframe-with-longtask.html'; +}, 'Performance longtask entries in cross-origin child iframe are observable in parent.');  </script>    </body> 
diff --git a/longtask-timing/longtask-in-parentiframe.html b/longtask-timing/longtask-in-parentiframe.html index 71f309a..be29b6c 100644 --- a/longtask-timing/longtask-in-parentiframe.html +++ b/longtask-timing/longtask-in-parentiframe.html 
@@ -9,7 +9,12 @@  <script>  const t = async_test(t => {  window.addEventListener('message', t.step_func(e => { - assert_equals(e.data, 'longtask+same-origin-ancestor+script+++'); + assert_equals(e.data['entryType'], 'longtask'); + assert_equals(e.data['frame-attribution'], 'same-origin-ancestor'); + assert_equals(e.data['task-attribution'], 'script'); + assert_equals(e.data['containerId'], ''); + assert_equals(e.data['containerName'], ''); + assert_equals(e.data['containerSrc'], '');  t.done();  }));  }, 'Performance longtask entries in parent are observable in child iframe.'); 
diff --git a/longtask-timing/longtask-in-sibling-iframe-crossorigin.html b/longtask-timing/longtask-in-sibling-iframe-crossorigin.html index 503d878..8e92284 100644 --- a/longtask-timing/longtask-in-sibling-iframe-crossorigin.html +++ b/longtask-timing/longtask-in-sibling-iframe-crossorigin.html 
@@ -9,21 +9,28 @@  <script>  async_test(t => {  window.addEventListener('message', t.step_func(e => { - assert_equals(e.data, 'longtask+cross-origin-unreachable+script+++'); + assert_equals(e.data['entryType'], 'longtask'); + assert_equals(e.data['frame-attribution'], 'cross-origin-unreachable'); + assert_equals(e.data['task-attribution'], 'script'); + assert_equals(e.data['containerId'], ''); + assert_equals(e.data['containerName'], ''); + assert_equals(e.data['containerSrc'], '');  t.done();  })); -}, 'Performance longtask entries in parent are observable in child iframe.'); + const observingFrame = document.createElement('iframe'); + observingFrame.id = 'observing-iframe-id'; + observingFrame.name = 'observing-iframe-name'; + document.body.appendChild(observingFrame); + observingFrame.src = 'resources/subframe-observing-longtask.html' + + /* Create a cross-origin iframe that generates a long task. */ + const longtaskFrame = document.createElement('iframe'); + longtaskFrame.id = 'longtask-iframe-id'; + longtaskFrame.name = 'longtask-iframe-name'; + // Simulate cross-origin by using sandbox. + longtaskFrame.sandbox = "allow-scripts"; + document.body.appendChild(longtaskFrame); + longtaskFrame.src = 'resources/subframe-with-longtask.html' +}, 'Performance longtask entries from cross-origin iframe are observable in its sibling.');  </script> - -<iframe src="resources/subframe-observing-longtask.html"></iframe> - -<script> - /* Create a cross-origin iframe that generates a long task. */ - const iframe = document.createElement('iframe'); - iframe.id = 'child-iframe-id'; - iframe.name = 'child-iframe-name'; - document.body.appendChild(iframe); - iframe.src = 'http://www1.web-platform.test:8000/longtask-timing/resources/subframe-with-longtask.html'; -</script> -  </body> 
diff --git a/longtask-timing/longtask-in-sibling-iframe.html b/longtask-timing/longtask-in-sibling-iframe.html index 9f53621..d463810 100644 --- a/longtask-timing/longtask-in-sibling-iframe.html +++ b/longtask-timing/longtask-in-sibling-iframe.html 
@@ -9,21 +9,25 @@  <script>  async_test(t => {  window.addEventListener('message', t.step_func(e => { - assert_equals(e.data, 'longtask+same-origin+script+child-iframe-id+' + - 'child-iframe-name+resources/subframe-with-longtask.html'); + assert_equals(e.data['entryType'], 'longtask'); + assert_equals(e.data['frame-attribution'], 'same-origin'); + assert_equals(e.data['task-attribution'], 'script'); + assert_equals(e.data['containerId'], 'longtask-iframe-id'); + assert_equals(e.data['containerName'], 'longtask-iframe-name'); + assert_equals(e.data['containerSrc'], 'resources/subframe-with-longtask.html');  t.done();  })); -}, 'Performance longtask entries in parent are observable in child iframe.'); -</script> + const observingFrame = document.createElement('iframe'); + observingFrame.id = 'observing-iframe-id'; + observingFrame.name = 'observing-iframe-name'; + document.body.appendChild(observingFrame); + observingFrame.src = 'resources/subframe-observing-longtask.html'   -<iframe src="resources/subframe-observing-longtask.html"></iframe> - -<script> - /* Create an iframe that generates a long task. */ - const iframe = document.createElement('iframe'); - iframe.id = 'child-iframe-id'; - iframe.name = 'child-iframe-name'; - document.body.appendChild(iframe); - iframe.src = 'resources/subframe-with-longtask.html' + const longtaskFrame = document.createElement('iframe'); + longtaskFrame.id = 'longtask-iframe-id'; + longtaskFrame.name = 'longtask-iframe-name'; + document.body.appendChild(longtaskFrame); + longtaskFrame.src = 'resources/subframe-with-longtask.html' +}, 'Performance longtask entries are observable in sibling iframe.');  </script>  </body> 
diff --git a/longtask-timing/resources/subframe-observing-longtask.html b/longtask-timing/resources/subframe-observing-longtask.html index e1e1a93..b232ecd 100644 --- a/longtask-timing/resources/subframe-observing-longtask.html +++ b/longtask-timing/resources/subframe-observing-longtask.html 
@@ -15,9 +15,14 @@  return;  // TODO(panicker): include containerType.  const attribution = longtask.attribution[0]; - const entryContents = longtask.entryType + '+' + longtask.name + '+' + - attribution.name + '+' + attribution.containerId + '+' + - attribution.containerName + '+' + attribution.containerSrc; + const entryContents = { + 'entryType': longtask.entryType, + 'frame-attribution': longtask.name, + 'task-attribution': attribution.name, + 'containerId': attribution.containerId, + 'containerName': attribution.containerName, + 'containerSrc': attribution.containerSrc + };  top.postMessage(entryContents, '*');  }  });